#include <cstdio>
#include <iostream>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include <cstdlib>


int main()
{
   printf("hello");
   _exit(0);
}



























// int main()
// {

//    // for (int i = 0; i < 200; i++)
//    // {
//    //    std::cout << "code :" << i << ", errstring: " << strerror(i) << std::endl;
//    // }
//    // printf("before: errno : %d, errstring: %s\n", errno, strerror(errno));

//    FILE *fp = fopen("./log.txt", "r");
//    if (fp == nullptr)
//    {
//       printf("after: errno : %d, errstring: %s\n", errno, strerror(errno));
//       return errno;
//    }

   // int*p = NULL;
   // *p = 10;

   // while(1)
   // {
   //    int a = 1/0;
   //    printf("Hello World\n");
   //    sleep(1);
   // }

   // printf("Before pid : %d\n",getpid());
   // int id = fork();
   // if(id < 0)
   // {
   //    perror("fork");
   //    return 1;
   // }

   // printf("After pid : %d,fork return : %d\n",getpid(),id);

//    return 0;
// }

// int g_unval;
// int g_val = 100;

// //已知结构体内一个元素地址，求结构体地址
// #define who(type ,x) (type*)(&x - &((type*)0->x))

// struct A
// {
//    int a;
//    char b;
//    double c;
//    float d;
// };

// int main()
// {
//    struct A obj;
//    printf("%p\n", &obj);
//    printf("%p\n", &obj.a);
//    printf("%p\n", &obj.b);
//    printf("%p\n", &obj.c);
//    printf("%p\n", &obj.d);
// }

// int main()
// {
//     int ret = fork();

//     if (ret < 0)
//     {
//         perror("fork");
//         return 1;
//     }
//     else if (ret == 0) // child
//     {
//         g_val = 0;
//         printf("child[%d] : %d : %p \n", getpid(), g_val, &g_val);
//     }
//     else // parent
//     {
//         printf("parent[%d] : %d : %p \n", getpid(), g_val, &g_val);
//     }
//     sleep(1);

//     return 0;
// }

// int main(int argc, char *argv[], char *env[])
// {
//     const char *str = "helloworld";

//     printf("code addr: %p\n", main);
//     printf("init global addr: %p\n", &g_val);
//     printf("uninit global addr: %p\n", &g_unval);

//     static int test = 10;
//     char *heap_mem = (char *)malloc(10);
//     char *heap_mem1 = (char *)malloc(10);
//     char *heap_mem2 = (char *)malloc(10);
//     char *heap_mem3 = (char *)malloc(10);

//     printf("heap addr: %p\n", heap_mem);     // heap_mem(0), &heap_mem(1)
//     printf("heap addr: %p\n", heap_mem1);    // heap_mem(0), &heap_mem(1)
//     printf("heap addr: %p\n", heap_mem2);    // heap_mem(0), &heap_mem(1)
//     printf("heap addr: %p\n", heap_mem3);    // heap_mem(0), &heap_mem(1)
//     printf("test static addr: %p\n", &test); // heap_mem(0), &heap_mem(1)
//     printf("stack addr: %p\n", &heap_mem);   // heap_mem(0), &heap_mem(1)
//     printf("stack addr: %p\n", &heap_mem1);  // heap_mem(0), &heap_mem(1)
//     printf("stack addr: %p\n", &heap_mem2);  // heap_mem(0), &heap_mem(1)
//     printf("stack addr: %p\n", &heap_mem3);  // heap_mem(0), &heap_mem(1)
//     printf("read only string addr: %p\n", str);

//     for (int i = 0; i < argc; i++)
//     {
//         printf("argv[%d]: %p\n", i, argv[i]);
//     }

//     for (int i = 0; env[i]; i++)
//     {
//         printf("env[%d]: %p\n", i, env[i]);
//     }
//     return 0;
// }
